tg-me.com/cppproglib/5707
Create:
Last Update:
Last Update:
🤓 Как использовать концепты C++20 для создания надежного кода
Устали от непонятных ошибок шаблонов? Концепты спешат на помощь.
// ❌ Старый подход без концептов
template<typename T>
T max_value(const std::vector<T>& values) {
// Ошибка будет обнаружена только при инстанциации шаблона
return *std::max_element(values.begin(), values.end());
}
// ✅ Современный подход с концептами
template<typename T>
requires std::totally_ordered<T>
T max_value(const std::vector<T>& values) {
return *std::max_element(values.begin(), values.end());
}
// Еще короче с auto
auto max_value(const std::vector<std::totally_ordered auto>& values) {
return *std::max_element(values.begin(), values.end());
}
- Более понятные сообщения об ошибках
- Документирование требований в коде
- Перегрузка на основе свойств типов
Встроенные концепты: std::integral, std::floating_point, std::copyable, std::same_as и другие.
Библиотека C/C++ разработчика #буст